//#define _CRT_SECURE_NO_WARNINGS 1
//
//#include "List.h"
//
//
//template<class T>
//struct List_iterator
//{
//	typedef Node<T> node;
//	typedef List_iterator<T> self;
//
//	List_iterator(node* ptr = nullptr)
//		:it(ptr)
//	{}
//
//	T& operator*()
//	{
//		return it->_data;
//	}
//
//	T* operator->()
//	{
//		return &it->data;
//	}
//
//	self& operator++()
//	{
//		it = it->_next;
//		return *it;
//	}
//	self& operator--()
//	{
//		it = it->_prev;
//		return *it;
//	}
//
//	self operator++(int)
//	{
//		self tmp(*this);
//		it = it->_next;
//		return tmp;
//	}
//
//	self operator--(int)
//	{
//		self tmp(*this);
//		it = it->_prev;
//		return tmp;
//	}
//
//	bool operator==(self& s)
//	{
//		return it == s.it;
//	}
//
//	bool operator!=(self& s)
//	{
//		return it != s.it;
//	}
//
//	node* it;
//};
//
//template<class T>
//struct const_List_iterator
//{
//	typedef Node<T> node;
//	typedef const_List_iterator self;
//	const_List_iterator( node* ptr = nullptr)
//	{
//		it = ptr;
//	}
//
//	const T& operator* ()
//	{
//		return it->_data;
//	}
//
//	const T* operator->()
//	{
//		return &it->data;
//	}
//
//
//	self& operator++()
//	{
//		it = it->_next;
//		return *it;
//	}
//	self& operator--()
//	{
//		it = it->_prev;
//		return *it;
//	}
//
//	self operator++(int)
//	{
//		self tmp(*this);
//		it = it->_next;
//		return tmp;
//	}
//
//	self operator--(int)
//	{
//		self tmp(*this);
//		it = it->_prev;
//		return tmp;
//	}
//
//	bool operator==(self& s)
//	{
//		return it == s.it;
//	}
//
//	bool operator!=(self& s)
//	{
//		return it != s.it;
//	}
//
//	node* it;
//};
//
//
//
